import 'package:flutter/material.dart';
import 'package:flutter_mode/zjw/data_transfer/CountModel.dart';
import 'package:flutter_mode/zjw/data_transfer/ScopedTopScreen.dart';
import 'package:scoped_model/scoped_model.dart';

//Scoped_model是一个dart第三方库，提供了让您能够轻松地将数据模型从父Widget传递到它的后代的功能。
//此外，它还会在模型更新时重新渲染使用该模型的所有子项。

//原理:Scoped model使用了观察者模式，将数据模型放在父代，后代通过找到父代的model进行数据渲染，
//最后数据改变时将数据传回，父代再通知所有用到了该model的子代去更新状态
class ScopedModelWidget extends StatelessWidget {
  //创建顶层状态
  final CountModel countModel = CountModel();

  @override
  Widget build(BuildContext context) {
    return ScopedModel<CountModel>(
      model: countModel,
      child: MaterialApp(
          title: 'ScopedModel传递数据',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: ScopedTopScreen()),
    );
  }
}
